package unq.persistencia;

import java.util.ArrayList;
import java.util.List;

/**
 * TODO: description
 */
public class FormacionStrategyImpl implements FormacionStrategy {
    List<Posicion> posiciones;

    private int id;

    public FormacionStrategyImpl(final List<Posicion> posiciones) {
        this.setPosiciones(posiciones);
    }

    @Override
    public List<Posicion> getPosiciones() {
        return this.posiciones;
    }

    @Override
    public void setPosiciones(final List<Posicion> posiciones) {
        this.posiciones = posiciones;
    }

    @Override
    public Formacion armarFormacion(final Equipo equipo) {
        List<Titular> titulares = new ArrayList<Titular>();
        List<Jugador> suplentes = new ArrayList<Jugador>(equipo.getJugadores());
        List<Jugador> usados = new ArrayList<Jugador>();
        for (Posicion pos : this.posiciones) {
            Jugador jug = equipo.mejorJugadorEnPosicion(pos, usados);
            titulares.add(new Titular(pos, jug));
            usados.add(jug);
        }
        suplentes.removeAll(usados);

        return new Formacion("4-2-4", titulares, suplentes);
    }

    @Override
    public int getId() {
        return this.id;
    }

    @Override
    public void setId(final int id) {
        this.id = id;
    }

}
